#include <iostream>
using namespace std;
struct persona
{
    string nombre;
    int edad;
};
int mostrarmenu();
void agregarpersona(struct persona vecp[],int &cantidad);
void mostrarpersonas(struct persona vecp[],int cantidad);
void buscarpersona(struct persona vecp[],int cantidad);
void modificarpersona (struct persona vecp[],int cantidad);
void promediodeedad(struct persona vecp[],int cantidad);
void personamasjoven(struct persona vecp[],int cantidad);
void personamasvieja(struct persona vecp[],int cantidad);
void ordenarxedad(struct persona vecp[],int cantidad);
void ordenarxnombre(struct persona vecp[],int cantidad);
int main()
{
    struct persona vecp[50];
    int opcion;
    int cantidad;
    cantidad=0;
    opcion=mostrarmenu();
    while(opcion!=10)
    {
        switch (opcion)
		{
			case 1:
				agregarpersona(vecp,cantidad);
				break;
            case 2:
                mostrarpersonas(vecp,cantidad);
                break;

            case 3:
                buscarpersona(vecp,cantidad);
                break;
            case 4:
                modificarpersona(vecp,cantidad);
                break;
            case 5:
                promediodeedad (vecp,cantidad);
                break;
            case 6:
                personamasjoven(vecp,cantidad);
                break;
            case 7:
                personamasvieja(vecp,cantidad);
                break;
            case 8:
                ordenarxedad(vecp,cantidad);
            case 9:
                ordenarxnombre(vecp,cantidad);
		}
    opcion=mostrarmenu();
    }

}

int mostrarmenu()
{
    int op;
    cout<<"1-Agregar persona"<<endl;
    cout<<"2-Mostrar Persona Persona"<<endl;
    cout<<"3-Buscar Persona"<<endl;
    cout<<"4-Modificar Persona"<<endl;
    cout<<"5-Promedio de edad de personas"<<endl;
    cout<<"6-Persona mas joven"<<endl;
    cout<<"7-Persona mas vieja"<<endl;
    cout<<"8-Ordenar x edad"<<endl;
    cout<<"9-Ordenar x nombre"<<endl;
    cout<<"10-Salir"<<endl;
    cin>>op;
    return op;
}

void agregarpersona(struct persona vecp[],int &cantidad)
{
    if(cantidad>=50)
    {
        return;
    }

    cout<<"Ingrese un nombre "<<endl;
    cin>>vecp[cantidad].nombre;
    cout<<"Ingrese la edad"<<endl;
    cin>>vecp[cantidad].edad;
    cantidad++;

}

void mostrarpersonas(struct persona vecp[],int cantidad)
{
    int i;
    i=0;
    while(i<cantidad)
    {
        cout<<vecp[i].nombre<<"--"<<vecp[i].edad<<endl;
        i++;
    }
}
void buscarpersona(struct persona vecp[],int cantidad)
{

    int i;
    i=0;
    string nombre;
    cout<<"Ingrese el nombre de la persona que desea buscar"<<endl;
    cin>>nombre;
    while(i<cantidad)
    {
        if(nombre==vecp[i].nombre)
        {
            cout<<"Edad:"<<vecp[i].edad;
            break;
        }
        i++;
    }


}
void modificarpersona (struct persona vecp[],int cantidad)
{
    int i;
    i=0;
    string nombre;
    cout<<"Ingrese el nombre de la persona que desea cambiar "<<endl;
    cin>>nombre;
    while(i<cantidad)
    {
        if(nombre==vecp[i].nombre)
        {
            cout<<"Ingrese la nueva edad";
            cin>>vecp[i].edad;
            break;
        }
        i++;
    }
}

void promediodeedad(struct persona vecp[],int cantidad)
{
    int edadtotal,i;
    double promedio;
    edadtotal=0;
    i=0;
    while(i<cantidad)
    {
        edadtotal=edadtotal+vecp[i].edad;
        i++;
    }
    promedio=edadtotal/cantidad;
    cout<<endl<<promedio;
}

void personamasjoven(struct persona vecp[],int cantidad)
{
    int i,jovene;
    string jovenn;
    i=0;
    jovene=vecp[i].edad;
    jovenn=vecp[i].nombre;

    i=1;
    while (i<cantidad)
    {
        if(vecp[i].edad<jovene)
        {
            jovene=vecp[i].edad;
            jovenn=vecp[i].nombre;
        }

        i++;
    }
    cout<<"Nombre:"<<jovenn;
    cout<<"Edad:"<<jovene;

}
void personamasvieja(struct persona vecp[],int cantidad)
{
    int i,jovene;
    string jovenn;
    i=0;
    jovene=vecp[i].edad;
    jovenn=vecp[i].nombre;

    i=1;
    while (i<cantidad)
    {
        if(vecp[i].edad>jovene)
        {
            jovene=vecp[i].edad;
            jovenn=vecp[i].nombre;
        }

        i++;
    }
    cout<<"Nombre:"<<jovenn;
    cout<<"Edad:"<<jovene;

}

void ordenarxedad(struct persona vecp[],int cantidad)
{
    int flag,j,i;
    struct persona aux;
    cout<<cantidad;
    for (j=0;j<cantidad;j++)
    {
        flag=1;
        for(i=0;i<(cantidad-1);i++)
        {
            if(vecp[i].edad>vecp[i+1].edad)
            {
                aux=vecp[i];
                vecp[i]=vecp[i+1];
                vecp[i+1]=aux;
                flag=0;
            }
        }

    }
    if(flag==1)
    {
            mostrarpersonas(vecp,cantidad);
    }


}
void ordenarxnombre(struct persona vecp[],int cantidad)
{
    int flag,j,i;
    struct persona aux;

    for (j=0;j<cantidad;j++)
    {
        flag=1;
        for(i=0;i<(cantidad-1);i++)
        {
            if(vecp[i].nombre>vecp[i+1].nombre)
            {
                aux=vecp[i];
                vecp[i]=vecp[i+1];
                vecp[i+1]=aux;
                flag=0;
            }
        }

    }
    if(flag==1)
    {
            mostrarpersonas(vecp,cantidad);
    }


}
